package com.hope.bubble.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

/**
 * 文件名：BubblePost
 * 创建者：hope
 * 邮箱：1602774287@qq.com
 * 微信：hope4cc
 * 创建时间：2022/10/22-09:28
 * 描述：帖子信息
 */
@Data
@Builder
@TableName("bms_post")
@AllArgsConstructor
@NoArgsConstructor
public class BubblePost implements Serializable  {
    /**
     * serialVersionUID适用于java序列化机制。简单来说，JAVA序列化的机制是通过 判断类的serialVersionUID来验证的版本一致的。
     * 在进行反序列化时，JVM会把传来的字节流中的serialVersionUID于本地相应实体类的serialVersionUID进行比较。
     * 如果相同说明是一致的，可以进行反序列化，否则会出现反序列化版本一致的异常，即是InvalidCastException。
     */
        private static final long serialVersionUID = 1L;

        /**
         * 主键
         */
        @TableId(value = "id", type = IdType.ASSIGN_ID)
        private String id;
        /**
         * 标题
         */
        @NotBlank(message = "标题不可以为空")
        @TableField(value = "title")
        private String title;
        /**
         * markdown
         */
        @NotBlank(message = "内容不可以为空")
        @TableField("`content`")
        private String content;

        /**
         * 作者ID
         */
        @TableField("user_id")
        private String userId;

        /**
         * 评论数
         */
        @TableField("comments")
        @Builder.Default
        private Integer comments = 0;

        /**
         * 收藏数
         */
        @TableField("collects")
        @Builder.Default
        private Integer collects = 0;

        /**
         * 浏览数
         */
        @TableField("view")
        @Builder.Default
        private Integer view = 0;

        /**
         * 专栏ID，默认不分栏
         */
        @TableField("section_id")
        @Builder.Default
        private Integer sectionId = 0;

        /**
         * 置顶
         */
        @TableField("top")
        @Builder.Default
        private Boolean top = false;

        /**
         * 加精
         */
        @TableField("essence")
        @Builder.Default
        private Boolean essence = false;

        /**
         * 创建时间
         */
        @TableField(value = "create_time", fill = FieldFill.INSERT)
        private Date createTime;

        /**
         * 修改时间
         */
        @TableField(value = "modify_time", fill = FieldFill.UPDATE)
        private Date modifyTime;
}